<?php

/**
 * 后台专用控制器
 * 在这里实现权限认证，根据controller和action的名称来控制
 * 设置默认的视图目录,设置默认视图扩展名为php
 * 默认编码为utf-8
 * @package admin
 */
class AdminAction extends Request
{
	/**
	 * 数据库对象
	 *
	 * @var Mysql
	 */
	public $db;
	
	
    /**
     * 重载控制器
     * 定义默认的视图路径，文件编码，视图扩展名
     * 并调用权限认证
     */
    public function __construct (Route $route) {
        parent::__construct($route);
        $this->setViewPath(dirname ($route->getControllerPath ()) . '/adminviews')//设置视图路径
             ->setAutoRender (true)//设置是否自动渲染页面
             ->setSuffix ('.php');//设置视图后缀名
        
        $this->db = Mysql::getInstance();
        $controllerName         = $this->getParam('controller');
        $actionName             = $this->getParam('action');
        $this->view->baseUrl    = $this->getBaseUrl ();
        $this->view->fullUrl    = $this->getHost() . $this->getBaseUrl ();
        $this->_authenticate($controllerName, $actionName);
    }
    

    /**
    * 权限认证，根据modelName, controllerName,actionName来控制用户的权限
    * @param controllerName 控制器名称
    * @param actionName 动作名称
    * @param modelName 模块名称，这里默认为admin
    */
	private function _authenticate ($controllerName, $actionName)
    {
        //登录&验证码模块不用验证
        if ($controllerName == 'admincp' && ($actionName == 'login' || $actionName == 'authcode'))
            return;
        
        
        //do Auth
        require_once APP . '/application/models/AdminUser.php';
        $admin = new AdminUser ($this->db);
        if ($admin->checkLogin ()) {//已登陆
            $adminInfo = $admin->getLoginInfo ();
            $this->view->admininfo = $adminInfo;
        } else {//未登陆
            $this->_redirect ( $this->url ($this->getBaseUrl(), "admincp", "login","", "admin"));
        }
    }
    
    
    /**
     * 显示信息，并跳转
     */
    public function showmessage () {
        $this->renderScript (APP . '/application/adminviews/showmessage.php');
        exit;
    }
}
